package review.Day_0429;

/**
 * @author zxc
 * @date 2023/04/29 22:06
 **/

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * 题目 ：删除某个字母，使得所有字母出现频率一致
 * 题目详述 ：
 * 给你一个下标从 0开始的字符串word，字符串只包含小写英文字母。你需要选择 一个下标并 删除下标处的字符，使得 word中剩余每个字母出现 频率相同。
 * 如果删除一个字母后，word中剩余所有字母的出现频率都相同，那么返回 true，否则返回 false。
 * 注意：
 * 字母x的 频率是这个字母在字符串中出现的次数。
 * 你 必须恰好删除一个字母，不能一个字母都不删除。
 *
 * 提示：
 * 2 <= word.length <= 100
 * word 只包含小写英文字母
 *
 */
public class EqualFrequency {
    public boolean equalFrequency(String word) {
        // 1.由于仅仅只包含小写英文字母，所以选择构建大小为26的数组，来记录各个字母出现频率
        int[] frequencies = new int[26];
        for (char ch : word.toCharArray()) {
            frequencies[ch - 'a']++;
        }
        Map<Integer , Integer> map = new HashMap<>();
        Set<Integer> set = new HashSet<>();
        for(int i = 0 ; i < 26 ; i++){
            if(frequencies[i] > 0){
                map.put(frequencies[i] , map.getOrDefault(frequencies[i] , 0) + 1 );
                set.add(frequencies[i]);
            }
            if(map.size() > 2){
                return false;
            }
        }
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if(entry.getValue() == 1){
                return true;
            }
        }
        return false;

    }
}
